<!DOCTYPE html>
<html class="no-js">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1" charset="UTF-8">
    <title>GrpcStreamingCall</title>
    <link href="../../images/logo-icon.svg" rel="icon" type="image/svg">
    <script>var pathToRoot = "../../";</script>
    <script>document.documentElement.classList.replace("no-js","js");</script>
    <script>const storage = localStorage.getItem("dokka-dark-mode")
    if (storage == null) {
        const osDarkSchemePreferred = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
        if (osDarkSchemePreferred === true) {
            document.getElementsByTagName("html")[0].classList.add("theme-dark")
        }
    } else {
        const savedDarkMode = JSON.parse(storage)
        if(savedDarkMode === true) {
            document.getElementsByTagName("html")[0].classList.add("theme-dark")
        }
    }
    </script>
<script type="text/javascript" src="https://unpkg.com/kotlin-playground@1/dist/playground.min.js" async="async"></script>
<script type="text/javascript" src="../../scripts/sourceset_dependencies.js" async="async"></script>
<link href="../../styles/style.css" rel="Stylesheet">
<link href="../../styles/main.css" rel="Stylesheet">
<link href="../../styles/prism.css" rel="Stylesheet">
<link href="../../styles/logo-styles.css" rel="Stylesheet">
<link href="../../styles/font-jb-sans-auto.css" rel="Stylesheet">
<script type="text/javascript" src="../../scripts/clipboard.js" async="async"></script>
<script type="text/javascript" src="../../scripts/navigation-loader.js" async="async"></script>
<script type="text/javascript" src="../../scripts/platform-content-handler.js" async="async"></script>
<script type="text/javascript" src="../../scripts/main.js" defer="defer"></script>
<script type="text/javascript" src="../../scripts/prism.js" async="async"></script>
<script type="text/javascript" src="../../scripts/symbol-parameters-wrapper_deferred.js" defer="defer"></script>
</head>
<body>
    <div class="root">
<nav class="navigation" id="navigation-wrapper">
    <div class="navigation--inner">
        <div class="navigation-title">
            <button class="menu-toggle" id="menu-toggle" type="button">toggle menu</button>
            <div class="library-name">
                    <a class="library-name--link" href="../../index.html">
                            wire-grpc-client
                    </a>
            </div>
            <div class="library-version">
5.1.0            </div>
        </div>
        <div class="filter-section" id="filter-section">
                <button class="platform-tag platform-selector jvm-like" data-active="" data-filter=":wire-grpc-client:dokkaHtml/jvmMain">jvm</button>
        </div>
    </div>
    <div class="navigation-controls">
        <button class="navigation-controls--btn navigation-controls--theme" id="theme-toggle-button" type="button">switch theme</button>
        <div class="navigation-controls--btn navigation-controls--search" id="searchBar" role="button">search in API</div>
    </div>
</nav>
        <div id="container">
            <div class="sidebar" id="leftColumn">
                <div class="sidebar--inner" id="sideMenu"></div>
            </div>
            <div id="main">
<div class="main-content" data-page-type="member" id="content" pageIds="wire-grpc-client::com.squareup.wire//GrpcStreamingCall/#kotlin.coroutines.SuspendFunction2[kotlinx.coroutines.channels.ReceiveChannel[TypeParam(bounds=[kotlin.Any])],kotlinx.coroutines.channels.SendChannel[TypeParam(bounds=[kotlin.Any])],kotlin.Unit]/PointingToDeclaration//1908545266">
  <div class="breadcrumbs"><a href="../../index.html">wire-grpc-client</a><span class="delimiter">/</span><a href="index.html">com.squareup.wire</a><span class="delimiter">/</span><span class="current">GrpcStreamingCall</span></div>
  <div class="cover ">
    <h1 class="cover"><span>Grpc</span><wbr></wbr><span>Streaming</span><wbr></wbr><span><span>Call</span></span></h1>
  </div>
  <div class="platform-hinted  with-platform-tabs" data-platform-hinted="data-platform-hinted">
    <div class="platform-bookmarks-row" data-toggle-list="data-toggle-list"><button class="platform-bookmark" data-filterable-current=":wire-grpc-client:dokkaHtml/jvmMain" data-filterable-set=":wire-grpc-client:dokkaHtml/jvmMain" data-active="" data-toggle=":wire-grpc-client:dokkaHtml/jvmMain">jvm</button></div>
<div class="content sourceset-dependent-content" data-active="" data-togglable=":wire-grpc-client:dokkaHtml/jvmMain"><div class="symbol monospace"><div class="block"><div class="block"><span class="token annotation builtin">@</span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin.jvm/-jvm-name/index.html"><span class="token annotation builtin">JvmName</span></a><span class="token punctuation">(</span><span>name<span class="token operator"> = </span><span class="breakable-word"><span class="token string">&quot;grpcStreamingCall&quot;</span></span></span><wbr></wbr><span class="token punctuation">)</span></div></div><span class="token keyword">fun </span><span class="token operator">&lt;</span><a href="-grpc-streaming-call.html">S</a><span class="token operator"> : </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-any/index.html">Any</a><span class="token punctuation">, </span><a href="-grpc-streaming-call.html">R</a><span class="token operator"> : </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-any/index.html">Any</a><span class="token operator">&gt; </span><a href="-grpc-streaming-call.html"><span class="token function">GrpcStreamingCall</span></a><span class="token punctuation">(</span><span class="parameters "><span class="parameter ">function<span class="token operator">: </span><span class="token keyword">suspend </span><span class="token punctuation">(</span><span data-unresolved-link="kotlinx.coroutines.channels/ReceiveChannel///PointingToDeclaration/">ReceiveChannel</span><span class="token operator">&lt;</span><a href="-grpc-streaming-call.html">S</a><span class="token operator">&gt;</span><span class="token punctuation">, </span><span data-unresolved-link="kotlinx.coroutines.channels/SendChannel///PointingToDeclaration/">SendChannel</span><span class="token operator">&lt;</span><a href="-grpc-streaming-call.html">R</a><span class="token operator">&gt;</span><span class="token punctuation">)</span><span class="token operator"> -&gt; </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin-stdlib/kotlin/-unit/index.html">Unit</a></span></span><span class="token punctuation">)</span><span class="token operator">: </span><a href="-grpc-streaming-call/index.html">GrpcStreamingCall</a><span class="token operator">&lt;</span><a href="-grpc-streaming-call.html">S</a><span class="token punctuation">, </span><a href="-grpc-streaming-call.html">R</a><span class="token operator">&gt;</span></div><p class="paragraph">Returns a new instance of <a href="-grpc-streaming-call/index.html">GrpcStreamingCall</a> that can be used for a single call to <a href="-grpc-streaming-call/execute-in.html">executeIn</a> or <a href="-grpc-streaming-call/execute-blocking.html">executeBlocking</a>.</p><p class="paragraph">The returned instance launches <a href="-grpc-streaming-call.html">function</a> on <span data-unresolved-link="kotlinx.coroutines/Dispatchers/IO/#/PointingToDeclaration/">Dispatchers.IO</span>. The function must close the <span data-unresolved-link="kotlinx.coroutines.channels/SendChannel///PointingToDeclaration/">SendChannel</span> when it has no more messages to transmit. If <a href="-grpc-streaming-call.html">function</a> throws, both channels will be closed using the thrown exception as a cause.</p><p class="paragraph">This method is useful when implementing the interfaces that are generated by Wire:</p><div class="sample-container"><pre><code class="block lang-kotlin" theme="idea">override fun RouteChat(): GrpcStreamingCall&lt;RouteNote, RouteNote&gt; {<br>  return GrpcStreamingCall { requests, responses -&gt;<br>    requests.consumeEach { note -&gt;<br>      responses.send(translateNote(note))<br>    }<br>    responses.close()<br>  }<br>}</code></pre><span class="top-right-position"><span class="copy-icon"></span><div class="copy-popup-wrapper popup-to-left"><span class="copy-popup-icon"></span><span>Content copied to clipboard</span></div></span></div><p class="paragraph">It is succinct when used in an expression function:</p><div class="sample-container"><pre><code class="block lang-kotlin" theme="idea">override fun RouteChat() = GrpcStreamingCall&lt;RouteNote, RouteNote&gt; { requests, responses -&gt;<br>  requests.consumeEach { note -&gt;<br>    responses.send(translateNote(note))<br>  }<br>  responses.close()<br>}</code></pre><span class="top-right-position"><span class="copy-icon"></span><div class="copy-popup-wrapper popup-to-left"><span class="copy-popup-icon"></span><span>Content copied to clipboard</span></div></span></div></div>  </div>
</div>
      <div class="footer">
        <span class="go-to-top-icon"><a href="#content" id="go-to-top-link"></a></span><span>© 2025 Copyright</span><span
                class="pull-right"><span>Generated by </span><a
                href="https://github.com/Kotlin/dokka"><span>dokka</span><span class="padded-icon"></span></a></span>
      </div>
            </div>
        </div>
    </div>
</body>
</html>
